/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package compilador.analisadorLexico.automatos;

import compilador.analisadorLexico.CodeReader;
import compilador.analisadorLexico.Token;
import compilador.analisadorLexico.TokenClass;
import compilador.analisadorLexico.TokenErro;


/**
 *
 * @author Paulo Victor
 */
public class AutomatoComentario implements IAutomato {

    private CodeReader reader;
    private Token token;
    private char backup;

    public AutomatoComentario(CodeReader reader){
        this.reader = reader;
    }
    
    public Token extraiToken() {

        reader.clear();

        backup = reader.next();

        if (backup == '/') {

            backup = reader.next();

            if (backup == '*') {

                while(backup != CodeReader.EOF){
                    //Corrigi isso aqui o automato tem q ler o caracter dentro do loop (by Henrique) 
                    backup = reader.next();            
                    while(backup == '*') {
                        backup = reader.next();
                        if(backup == '/' ){
                            int linha = reader.getCurrentLine();
                            reader.next();
                            
                            token = new Token(TokenClass.COMENTARIO, reader.closeToken(), linha);
                            return token;
                        }
                        
                    }
                }
                
                reader.next();
                int linha = reader.getCurrentLine();
                token = new TokenErro(reader.closeToken(), linha, "Comentário não foi fechado");
                
                return token;
            }
        }
        return null;
    }
}
